﻿using NicoView.Model.Service.Results;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace NicoView.Model.Service
{
    /// <summary>
    /// 通知機能付ニコニコ認証情報
    /// </summary>
    public sealed class NotificationNicoAuth:NicoViewObservableObject
    {
        /// <summary>
        /// 認証情報
        /// </summary>
        internal NicoSafeUserAuth Auth
        {
            get
            {

                return this.auth;
            }

            set
            {
                this.Set(() => this.Auth, ref this.auth, value);
            }
        }

        private NicoSafeUserAuth auth;

        /// <summary>
        /// コンストラクタ
        /// </summary>
        public NotificationNicoAuth():this(new NicoSafeUserAuth())
        {
        }

        public NotificationNicoAuth(NicoSafeUserAuth auth)
        {
            this.auth = auth;
        }


        /// <summary>
        /// 認証情報を識別する鍵情報
        /// </summary>
        public Guid IdentificationKey
        {
            get
            {
                return this.Auth.IdentificationKey;
            }
        }


        /// <summary>
        /// メールアドレス
        /// </summary>
        public string Mail
        {

            get
            {
                return this.Auth.Mail;
            }



        }



        public Cookie UserSession
        {
            get
            {
                return this.Auth.UserSession;
            }

            set
            {
                this.Auth.UserSession = NicoSafeUserAuth.ToSafeCookie(value);
                this.RaisePropertyChanged(() => this.UserSession);
            }
        }
        

        

        /// <summary>
        /// メールアドレスチェック
        /// </summary>
        /// <param name="mail"></param>
        /// <returns></returns>
        public static IResult CheckMail(string mail)
        {
            if (string.IsNullOrEmpty(mail)) return new Result("メールアドレスが入力されていません");
            return new Result();


        }

        /// <summary>
        /// パスワードチェック
        /// </summary>
        /// <param name="password"></param>
        /// <returns></returns>
        public static IResult CheckPassword(string password)
        {
            if (string.IsNullOrEmpty(password)) return new Result("パスワードが入力されていません");
            return new Result();
        }



    }
}
